<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Map对象</title>
    <script>
        /* 
        
            Map
                1.Map用来存储键值对结构的数据（key-value）
                2.Object中存储的数据就可以认为是一种键值对结构，但确切来讲，Object是一种名值对结构。

                3.map对象名.size可以查看键值对的数量
                4.通过map对象名.set(键，值)在map对象中添加键值对
                5.通过map对象名.get(键)
                6.每个键只能对应一个值，不能有重复的键。

            Map和Object的区别
                1.Object中属性名只能是字符串或Symbol,，如果传递了一个其他类型的属性名，JS解释器会自动将其转为字符串。
                2.Map中任何类型的值都能成为数据的key.
        */
       // Object
        const obj2={}
        const obj={
            "name":"孙悟空",
            "age":18,
            [Symbol()]:"1111",
            [obj2]:"2222"
        }
        console.log(obj)

        //  Map
        /* 
            创建:
                new Map()
            属性和方法：
                map.size  用来获取map中键值对的数量
                map.set(键，值) 向map中添加键值对
                map.get(key)    根据key来获取值
                map.delte(key)  根据key来删除指定数据
                map.has(key)    根据key来查询map中是否包含指定的键
                map.clear()     清空全部的键值对
        */
        const map=new Map()

        map.set("name","孙悟空")
        map.set(obj2,"嘻嘻嘻")
        map.set(NaN,"哈哈哈")

        console.log(map)
        console.log(map.get(NaN))


    </script>
</head>
<body>
    
</body>
</html>